#pragma once
#include <utl/math.h>
#include <entt/entity/entity.hpp>
namespace primal
{
	namespace component
	{
		enum COM_TYPE
		{
			COM_TYPE_TRANS         = 0x0001,
			COM_TYPE_GTRANS        = 0x0002,
			COM_TYPE_PROP          = 0x0004,
			COM_TYPE_CAMERA        = 0x0008,
			COM_TYPE_LIGHT         = 0x0010,
			COM_TYPE_DEFAULT       = COM_TYPE_TRANS | COM_TYPE_GTRANS | COM_TYPE_PROP
		};

		struct transform
		{
			DirectX::XMVECTORF32 position;
			DirectX::XMVECTORF32 rotate;
			DirectX::XMVECTORF32 scale;
		};

		struct global_transform
		{
			DirectX::XMMATRIX trans;
		};

		struct property_info
		{
			property_info() :name{}, parent_entity{ entt::null }, child_count{}
			{}
			char name[256];
			entt::entity parent_entity;
			entt::entity child_entitys[62];
			u32 child_count;

			void push_entity(entt::entity e)
			{
				child_entitys[child_count] = e;
				++child_count;
			}
		};

		struct camera
		{
			DirectX::XMVECTORF32 front;
		};

		struct light
		{

		};
	}
}